/**
 * 工具函数
 */

import axios from "axios";
import { signfn } from "./header.js";
import { clearLoginUserInfo } from "./business.js";
import { message } from 'antd';
// 设置服务器地址
const $http = axios.create({
  baseURL:import.meta.env.VITE_HTTP_URL,
  timeout: 10000,
});

// 请求拦截器
$http.interceptors.request.use(
  async (config) => {
    function extractPath(str) {
      const match = str.match(/\/v1\/(.*)/);
      if (match && match.length > 1) {
        return "/" + match[1];
      }
      return str;
    }

    const headerSin = signfn(extractPath(config.url));
    config.headers = {
      ...config.headers,
      ...headerSin,
    };
    config.headers["auth-access-token"] = localStorage.getItem("releaseToken") || "";
    return config;
  },
  (err) => {
    return Promise.reject(err);
  }
);

// 响应拦截器
$http.interceptors.response.use(
  (response) => {
   return response.data
  },
  (err) => {
    if (navigator.onLine) {
      // 有网如果响应状态码是 500，提示服务异常
      message.open({
        type: "error",
        content: "抱歉，当前服务不可用，请刷新试试。",
      })
    } else {
      // 没网
      message.open({
        type: "error",
        content: " 抱歉，当前网络异常，请刷新试试。",
      });
    }

    return Promise.reject(err);
  }
);

// 暴露出去
export default $http;
